home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Shareware World / Utilities / User Interface / Golive [Font] / LaunchURL / Source / OC Extension.h < prev   
Text File  |  1996-04-25  |  6KB  |  151 lines

  1. /***************************************************
  2.  *
  3.  * Header file for OneClick extensions
  4.  *
  5.  ***************************************************/
  6.  
  7. // added by DWC 4/25/96
  8. #pragma once
  9.  
  10. //    Need AppleEvent header for AEBuild call-backs
  11. #include <AppleEvents.h>
  12.  
  13.  
  14. //******** Constants *************************
  15. //    Script execution errors
  16. enum    { kErrNone, kErrGeneral, kErrNotFound, kErrParameter };
  17.  
  18.  
  19. //******** Macros *************************
  20. //    Macros for calling call-back routines
  21. #define GetValue(pXRef,value) (*pXRef->pGetValue)(value)
  22. #define GetNumberValue(pXRef,value) (*pXRef->pGetNumberValue)(value)
  23. #define GetStringValue(pXRef,value) (*pXRef->pGetStringValue)(value)
  24. #define SetValueString(pXRef,value,hString) (*pXRef->pSetValueString)(value,hString)
  25. #define DisposeValue(pXRef,value) (*pXRef->pDisposeValue)(value)
  26. #define GetPString(pXRef,pString) (*pXRef->pGetPString)(pString)
  27. #define ValueStringToPStr(pXRef,value,pString) (*pXRef->pValueStringToPStr)(value,pString)
  28. #define PopupMenu(pXRef,hMenu,left,top,bottom,sSelection) (*pXRef->pPopupMenu)(hMenu,left,top,bottom,sSelection)
  29. #define SelectCustom(pXRef,left,top,bottom,pMenuDefFn,fMakeGlobal) (*pXRef->pSelectCustom)(left,top,bottom,pMenuDefFn,fMakeGlobal)
  30. #define SendAppleEvent(pXRef,pEvent) (*pXRef->pSendAppleEvent)(pEvent)
  31. #define SendAEResult(pXRef,pEvent,fReturnResult) (*pXRef->pSendAEResult)(pEvent,fReturnResult)
  32. #define pAEBuild(pXRef,dst,src) (*pXRef->pAEBuild)(dst,src)
  33. #define pAEBuildParameters(pXRef,pEvent,format) (*pXRef->pAEBuildParameters)(value,pEvent,format)
  34. #define pAEBuildAppleEvent(pXRef,theClass,theID,addressType,addressData,addressLength,returnID,transactionID,result,paramsFmt) (*pXRef->pAEBuildAppleEvent)(theClass,theID,addressType,addressData,addressLength,returnID,transactionID,result,paramsFmt)
  35.  
  36. //******** Structs *************************
  37.  
  38. //    Used to pass values during execution of a script. Can contain a number or a string.
  39. typedef struct
  40. {
  41.     enum { tNOVALUE, tNUMBER, tSTRING, tSCRIPT, tTAG }    type;
  42.     long        number;    // For numbers
  43.     Ptr            p;        // For strings/tag
  44.     long        len;    //    "    "
  45.     Handle        h;        // For temporary strings
  46.     Handle        hClipboard;
  47.     short        scrapCount;
  48. } valueRec;
  49.  
  50. //    Used to output text or clicks to the application
  51. typedef struct
  52. {
  53.     enum { tNONE, tTYPE, tCLICK, tTYPECOMMAND, tSuspendResume } type;
  54.     Ptr        p;            // for Type
  55.     long    len;        //    "    "
  56.     long    position;    //    "    "
  57.     Handle    h;            //    "    "    (used only for a temporary value)
  58. } OutputRec;
  59.  
  60. //    Stack element for calling another script
  61. typedef struct
  62. {
  63.     Handle        hScript;
  64.     Byte        *pScript;
  65.     Byte        *pNextCommand;
  66.     short        LoopIdx;
  67.     Point        ButtonBottom,ButtonTop;
  68.     Handle        LocalVars,hAppVars;
  69.     char        HandleState;
  70.     Boolean        fNoInterrupts;
  71.     WindowPeek    wPtr;
  72.     Handle        hBar;
  73.     short        button;
  74.     Boolean        fScheduled;
  75.     Boolean        fStartup;
  76.     Boolean        fStaticVarsChanged;
  77.     Handle        hASResult;
  78.     Handle        hStaticVars;
  79.     unsigned char sListDelimiter[2];
  80.     short        cursor;
  81.     GrafPtr        pDrawPort;    //    Port to draw to
  82.     Byte        *pThisCommand;    //    Point to beginning of this line
  83.     short        specialSchedule;
  84.     Boolean        fNoDialogs;
  85.     Boolean        fIgnoreClicks;
  86.     long        ticksPause;
  87.     short        modifiers;
  88.     RgnHandle    hUpdate;
  89.     Handle        hDragAndDrop;
  90.     OutputRec    output;
  91. } ScriptStackRec;
  92.  
  93. typedef struct
  94. {
  95.     short    Type;        //    Type of keyword
  96.     short    Token;        //    Token
  97.     short    index;        //    Index for string arrays
  98.     Handle    hCode;        //    Handle to code
  99.     short    File;        //    Offset to file data
  100.     OSType    creator;    //    File creator
  101.     long    CSResult;    //    Keep Control Strip result
  102.     long    CSFeatures;    //    Control strip features    
  103. } ExternalData;
  104.  
  105. typedef struct
  106. {
  107.     short            vRefNum;    //    Volume refnum of resource file
  108.     long            dirID;        //    Directory ID of resource file
  109.     Str255            fileName;    //    Filename of resource file
  110. } FileData;
  111.  
  112. //    Passed to externals
  113. typedef struct
  114. {
  115.     valueRec        *pValue;    //    Value passed in or out (functions pass values out, system variables pass either way)
  116.     Boolean            fSet;        //    Set (not get) system variable
  117.     ScriptStackRec    *pScript;    //    Pointer to script info
  118.     OutputRec         *pOutput;    //    Pointer to output record
  119.     EventRecord     **ppEvent;    //    Pointer to event record pointer
  120.     Boolean         *pExit;        //    Pointer to exit flag
  121.     FileData        *pFileData;    //    Pointer to references for resource file    
  122.     Boolean         *pInterruptScript;    //    This field is no longer used
  123.  
  124.     //    Callback routines
  125.     pascal Boolean (*pGetValue)(valueRec *);        //    Pointer to callback routine to get a value
  126.     pascal Boolean (*pGetNumberValue)(valueRec *);    //    Pointer to callback routine to get a numeric value
  127.     pascal Boolean (*pGetStringValue)(valueRec *);    //    Pointer to callback routine to get a string value
  128.     pascal Boolean (*pGetPString)(StringPtr);        //    Pointer to callback routine to get a Pascal string value    
  129.     pascal void (*pSendAppleEvent)(void *pTheEvent);    //    Callback routines to send an AppleEvent
  130.  
  131.     long        *pError;    //    Pointer to last error
  132.     
  133.     //    Pointer to callback routine to convert a string value to a Pascal string
  134.     pascal void (*pValueStringToPStr)(valueRec *value,StringPtr sValue);
  135.     pascal void (*pDisposeValue)(valueRec *value);
  136.     pascal void (*pSendAEResult)(void *pTheEvent, Boolean fReturnResult);    //    Callback routines to send an AppleEvent
  137.     pascal short (*pPopupMenu)(MenuHandle hMenu,short left,short top,short bottom, unsigned char *s);
  138.     pascal short (*pSelectCustom)(short left, short top, short bottom, ProcPtr pMenuDefFn, Boolean fMakeGlobal);
  139.     pascal void (*pSetValueString)(valueRec *pValue, Handle h);
  140.  
  141.     OSErr (*pAEBuild)(AEDesc *dst, const char *src, ...);
  142.     OSErr (*pAEBuildParameters)(AppleEvent *event, const char *format, ...);
  143.     OSErr (*pAEBuildAppleEvent)(AEEventClass theClass, AEEventID theID,
  144.                         DescType addressType, const void *addressData, long addressLength,
  145.                         short returnID, long transactionID, AppleEvent *result,
  146.                         const char *paramsFmt, ...);
  147.     ExternalData **hXExternalData;
  148.     short    *pNumExternals;
  149.                         
  150. } ExternalParameterRec;
  151.